#获取采购书籍信息
from mxlsxwb import MxlsxWB
import numpy as np
class DiscreteMath:
    xlsxwb=MxlsxWB
    #构造函数
    def __init__(self):
        self.min_row=1 #初始化最小行号
        self.max_row=1 #初始化最大行号
    #改变读取的表格
    def set_path(self,workpath):
        self.xlsxwb.set_filename(workpath) #改变文件名
        self.xlsxwb.get_fileinfo() #装载文件
        self.xlsxwb.choose_sheet('Sheet1') #设置读取的表格
        self.xlsxwb.get_sheetinfo() #获取表格的行数，列数
    #获取成绩数据区的第一行
    def get_first_row_of_data(self):
        self.min_row=self.xlsxwb.get_row_number_of_sheet(self.xlsxwb.get_row_number_of_sheet(),'列字段')
        self.min_row+=1 #数据区从下一行开始
    #获取成绩数据区的最后一行
    def get_last_row_of_data(self):
        self.max_row=self.xlsxwb.get_row_number_of_sheet(self.xlsxwb.get_row_number_of_sheet(),'采购数据信息')
        self.max_row-=2 #数据区最后一行是从找到的行号中减去2行
        #print(self.max_row)
    #获取某个列的数据
    def get_col_of_data(self,col_name):
        self.get_first_row_of_data() #获取数据区的第一行
        self.get_last_row_of_data() #获取数据区的最后一行
        #获取该列数据所在的列号
        col=self.xlsxwb.get_col_number_of_sheet(self.xlsxwb.get_rows_of_sheet(),col_name)
        return self.xlsxwb.get_coldata(col,self.min_row,self.max_row)
    #采购数据统计
    def histogram_of_data(self,col_data):
        #对空值的处理
        if col_data is None:
            return None
        col_data.sort() #排序数据
        new_data=np.zeros(100,int) #创建大小为100的全0数组
        for x in col_data:
            #统计该列数据的列数
            if int(x)>0:
                new_data[int(x)]+=1
        #print(new_data)
        return new_data
#读取主程序
Demo=DiscreteMath()
Demo.set_path('score/cgtest.xlsx')
Demo.get_first_row_of_data()
Demo.get_last_row_of_data()
print(Demo.get_col_of_data('平均'))
